package org.lsb.app_back.service;


import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.lsb.app_back.domain.AppInfo;
import org.lsb.app_back.mapper.AppInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

@Service
public class AppInfoService {

    @Autowired
    public AppInfoMapper appInfoMapper;


    /**
     * 分页查询
     * @param appInfo
     * @param pageNum
     * @return
     */
    public PageInfo getPage(AppInfo appInfo, Integer pageNum) {
        PageHelper.startPage(pageNum,4,"id desc");

        if(pageNum<=0){
            throw new RuntimeException("当前页面不能小于等于0");
        }
        List<AppInfo> list= appInfoMapper.selectBy(appInfo);
        return new PageInfo(list);
    }

    public void saveOrupdate(AppInfo appInfo) {
        if(appInfo.getId()==null){
            //添加
            appInfo.setCreationdate(new Date());//创建时间
            appInfo.setDownloads(0L);//下载量默认值
            appInfo.setStatus(1L);//状态默认值 --待审核状态


            //TODO  把当前登陆者id保存
//            appInfo.setCreatedby();
            appInfoMapper.insert(appInfo);
        }else{
            //修改
            appInfo.setModifydate(new Date());
            appInfoMapper.updateByPrimaryKeySelective(appInfo);

        }


    }


    /**
     * 检验唯一性
     * @param apkname
     * @param id
     * @return
     */
    public Boolean validateApkName(String apkname, Long id) {

        //特殊情况 修改时没修改用户apk名称

        if(id!=null){
            AppInfo appInfo1 = appInfoMapper.selectByPrimaryKey(id);
            if(appInfo1.getApkname().equals(apkname)){
                return true;  //用户未修改apkname,不校验直接true
            }
        }


        //普通情况
        AppInfo appInfo = new AppInfo();
        appInfo.setApkname(apkname);

        List<AppInfo> appInfos = appInfoMapper.selectBy(appInfo);
        if(appInfos==null||appInfos.size()==0){
            return true;   //用户修改了apkname  数据库中apknam没有同名的
        }else {
            return false;  //用户未修改apkaname  数据库中apkname名称已占用
        }

    }


    public AppInfo getById(Long id) {
        return appInfoMapper.selectByPrimaryKey(id);
    }
}
